VAE

설명 잘 해놓은 블로그

Background

주목할 점

  1. 왜 VAE는 Auto Encoder와 비슷한 구조가 되었을까? (탄생 과정은 관련이 없지만)
  2. 과연 Variational Inference라는 것은 뭘까? 그리고 VAE와 어떤 관련이 있을까?

기존 생성 모델의 문제점

Pasted image 20250317135734.png
Generator gθ(.)는 어떠한 랜덤 변수 z에 대해서, 어떠한 표본 x(train data)와 유사하게 생성하도록 학습을 한 것이다. likelihood p(x|gθ(z))를 최대화하기 위하여 학습이 될 것이다.

문제 -> 이렇게 하니깐 원래 샘플도 잘 생성을 못함...

가우시안 분포에서 샘플링한다고 생각하면, Maximum Likelihood 문제를 MSE (Mean Squared Error)의 관점으로 바꿀 수 있음.
Pasted image 20250317140205.png

해결법 => 단순한 가우시안 분포에서 샘플링하지 말고, 이상적인 샘플링 함수(posterior)에서 샘플링해서 최소 원래 표본 x랑 비슷하도록 생성하게 하자!!

VAE란?

VAE는 Variational Inference에서 true posterior을 구하기 위한 접근 방식 중 하나다. (다른 접근 방식? 어쩌면 Twist SMC)

Pasted image 20250317141004.png

인코더를 사용해서 p(z|x)를 근사하는 가우시안 분포를 찾아주고, 거기서 샘플링해서 표본 x와 유사하도록 생성하는 decoder를 학습한다.

Encoder에서 적어도 x에 대한 성능이 보장이 되는 최적의 샘플링 함수를 만들기 위해 와 를 추정하여 가우시안 함수를 구성합니다. 이 이미지 x에 대한 최소한의 성능은 보장하면서, 이미지를 잘 컨트롤하여 여러 이미지를 생성하기 위해 z를 샘플링합니다. 이제 이 z를 Decoder에 입력하여 다시 x 이미지를 생성합니다.

ELBO (Evidence Lower Bound)

Pasted image 20250317141240.png

여기서 p(x)는 인풋 x를 넣었을 때, 그것과 유사한 것을 잘 생성해내는 함수이다.
이러한 함수와 가장 유사한 함수를 만드려고 하는데, 그 loss를 계산해보면 위와 같다.

중요한 점은, ELBO를 ML(Maximum Likelihood)에 가깝게 최대화 하면 KL Divergence가 자연스럽게 0으로 수렴하고, 이는 qϕ(z|x) (VAE의 인코더)가 true posterior인 p(z|x)에 가까워 진다는 것이다!

이 ELBO를 최적화하는 관점으로 식을 정리하면 이렇게 나온다.

Li(ϕ,θ,xi)=Eqϕ(z|xi)[log(xi|gθ(z))]+KL(qϕ(z|xi)||p(z))

앞항은 Reconstruction Error이고, 뒷항은 Regularization Error이다.

Reparameterization Trick

결론

Pasted image 20250317142704.png

나는 latent 보고 뭔가 잘 생성하는 생성 모델을 만들고 싶어.
근데 그냥 아무무 가우시안에서 생성하니 자기 자신도 생성을 잘 못하네.
그래서 아무무 가우시안이 아니라 자기 자신을 참고한 확률 분포 p(z|x)에서 샘플링한 다음에 생성하고 싶어.
그런데 p(z|x)는 그냥 못구해.
그래서 이것을 구하기 위해서 딥러닝 모델을 쓸거야.
그래서 인코더가 가우시안 분포를 사용해서 p(z|x)를 근사하고, 해당 근사된 분포에서 샘플링해서 디코더를 통과하면 원래 넣어준 인풋과 유사하게 생성하도록 훈련할거야.
이렇게 하니깐 오토인코더랑 어느정도 비슷하게 되었네??

훈련을 위해서는 Reconstruction Error, 즉 원래 인풋과 비슷하게 생성이 되었는가?
Regularization Error, 인코더에서 나온 것들이 잘 정규화 되었는가?
이 두가지를 쓸거고, 학습을 위해 Reparameterization Trick을 사용할거다!